The development and application of rule engines is one branch of Artificial Intelligence (A.I.), which is a very broad research area that focuses on “making computers think like people.” Broadly speaking, a rule engine is a set of one or more software modules running on a computing device (e.g., a server, a personal computer, etc.) that processes information by applying rules to data objects (also known as facts). A rule is a logical construct for describing the operations, definitions, conditions, and/or constraints that apply to some predetermined data to achieve a goal. Various types of rule engines have been developed to evaluate and process rules. Conventionally, a rule engine creates a rulebase containing a network to process rules and data objects, such as the example shown in FIG. 1. The network may include many different types of nodes, including, for example, object-type nodes, alpha nodes, left-input-adapter nodes, eval nodes, join nodes, not nodes, and terminal nodes, etc. But the conventional network has only one root node 101.
Typically, facts enter a network at the root node 101, from which they are propagated to any matching object-type nodes. From a object-type node, a data object is propagated to either an alpha node (if there is a literal constraint), a left-input-adapter node (if the data object is the left most object type for the rule), or a beta node (such as a join node).
Note that traditional applications using rule engines work by gathering all the facts regarding a given problem or scenario, inserting them into the working memory, executing the rules, obtaining the results, and starting the processing of the next work item. However, as more and more applications in today's business world demand the capability of event processing, where events represent state changes, typically have temporal relationship between them, and are generated in continuous streams, the conventional rule engines discussed above are inadequate to meet the demands of these applications.